package com.devMode.Factory.SimpleFactoryMode;

/**
 * 简单工厂模式
 * 类的是例外操作放在了一个类（工厂）里面来实现
 * 这样做可以做到把client和factory实现解耦，客户不知道具体要创建哪个类，而且客户会有多个
 * 如果每个client都要直到所有类实例化的细节（实例化的代码每个client都有一份），那么重复代码会很严重
 * 所以此时client将类实例化的职责交给一个专门的工厂来管理
 */
public class SimpleFactoryMode {


    public static void main(String[] args) {
        simpleFactory factory = new simpleFactory();
        Product Product1 = factory.createProduct(1);
        Product1.show();
        Product Product2 = factory.createProduct(2);
        Product2.show();
    }


}


interface Product{
    void show();
}

class Product1 implements Product{

    @Override
    public void show() {
        System.out.println("product 1");
    }
}

class Prorudct2 implements  Product{

    @Override
    public void show() {
        System.out.println("product 2");
    }
}

class simpleFactory{

    public Product createProduct(int type){
        if(type == 1)
            return new Product1();
        else if(type == 2)
            return new Prorudct2();
        //else if ...
        return  null;
    }
}


